const isDEV = process.env.NODE_ENV === 'development' // 是否是开发模式
module.exports = {
  // 执行顺序由右往左,所以先处理ts,再处理jsx,最后babel转换为低版本语法
  presets: [
    [
      '@babel/preset-env', // 处理 js兼容性
      {
        // 或者配置.browserslistrc
        // "targets": {
        //  "chrome": 35,
        //  "ie": 9
        // },
        targets: { browsers: ['> 1%', 'last 2 versions', 'not ie <= 8'] },
        useBuiltIns: 'usage', // 根据配置的浏览器兼容,以及代码中使用到的api进行引入polyfill按需添加
        corejs: 3, // core-js版本
        loose: true // es6语法降级转换
      }
    ],
    [
      '@babel/preset-react', // 处理jsx语法
      { runtime: 'automatic' } // 自动注入 react-dom 的依赖
    ],
    '@babel/preset-typescript' // 处理 ts 、 不需要 ts-loader
  ],
  plugins: [
    // 配置使用装饰器旧语法
    ['@babel/plugin-proposal-decorators', { legacy: true }],
    // 启动react热更新插件
    isDEV && require.resolve('react-refresh/babel')
  ].filter(Boolean) // 过滤空值
}
